To ensure predictable results, operators in DataWindow expressions are evaluated in a specific order of precedence. When operators have the same precedence, they are evaluated from left to right.
The following table lists the operators in descending order of precedence:
Operator |
Purpose |
---|---|
( ) |
Grouping |
^ |
Exponentiation |
*, / |
Multiplication and division |
+, - |
Addition and subtraction; string concatenation |
IN,LIKE,BETWEEN |
SQL SELECT statement conditions |
=, >, <, <=, >=, <> |
Relational operators |
AND,OR |
Logical and and logical or |
NOT |
Logical negation |
Since expressions in parentheses are evaluated first, to override the precedence order, enclose expressions in parentheses. You can also use parentheses to clarify the order of evaluation. Within each set of parentheses, precedence order applies.
In the expression x+y*a+b
, y
is
first multiplied by a
(because
multiplication has a higher precedence than addition). The result
of the multiplication is then added to x
and
this result is then added to b
(because
the + operators are evaluated left to right).
To force evaluation in a different order, group expressions
with parentheses. For example, in the expression x+(y*(a+b))
, a+b
is
evaluated first. The sum a+b
is
then multiplied by y
, and this
product is added to x
.