Operator Precedence
In an expression that contains more than one mathematical calculation, the rule engine operates:
- First on calculations or the arguments of functions contained in parentheses
- Second on multiplication and division operations reading left to right in the rule syntax
- Third on addition and subtraction operations reading left to right in the rule syntax
- For equal-priority operations, the rule engine works from left to right.
For example, the expression 2 + 3 * 4 is equal to 14; multiplication is higher priority than addition, so the rule editor multiplies 3 times 4 to get 12, then adds 2. But the expression (2 + 3) * 4 is equal to 20; in this case the parenthetical calculation is higher priority than multiplication so the rule engine first adds 2 and 3 to get 5, then multiplies by 4.
This is the precedence order of the operators, from highest (1) to lowest (8):
| Precedence | Operator | Type |
|---|---|---|
| 1 | . (dot) | Property access |
| 2 | +, − ,not | Unary, Arithmetic, boolean |
| 3 | *, /, mod, div | Multiplication, division |
| 4 | +, − | Addition, subtraction |
| 5 | "" | String |
| 6 | <, <=, >, >= | comparison |
| 7 | =, is, <>,*=, /=, +=, −= | Assignment, declaration, comparison, compound assignment. An equals sign (=) used in the "if" portion of a rule is for comparison. In the "then" portion of the statement, it is an assignment operator. |
| 8 | and, or | Boolean |