# Arithmetic operators¶

Arithmetic operators perform mathematical operations on numeric values (including timestamps):

Operator

Description

`+`

Add one number to another

`-`

Subtract the second number from the first

`*`

Multiply the first number with the second

`/`

Divide the first number by the second

`%`

Finds the remainder of division of one number by another

`^`

Finds the exponentiation of one number raised to another

Note

Operators are evaluated from left to right. Operation with a higher precedence is performed before operation with a lower precedence. Operators have the following precedence (from higher to lower): 1. Parentheses 2. Exponentiation 3. Multiplication and Division 4. Addition and Subtraction Use parentheses if you want to ensure a specific order of evaluation.

Here’s an example that uses all of the available arithmetic operators:

```cr> select ((2 * 4.0 - 2 ^ 3 + 1) / 2) % 3 AS n;
+-----+
|   n |
+-----+
| 0.5 |
+-----+
SELECT 1 row in set (... sec)
```

Arithmetic operators always return the data type of the argument with the higher precision.

In the case of division, if both arguments are integers, the result will also be an integer with the fractional part truncated:

```cr> select 5 / 2 AS a,  5 / 2.0 AS b;
+---+-----+
| a |   b |
+---+-----+
| 2 | 2.5 |
+---+-----+
SELECT 1 row in set (... sec)
```

Note

The same restrictions that apply to scalar functions also apply to arithmetic operators.