Notion operators have a specific operator precedence order. Operators with a higher precedence (10 being the highest) will have their logic executed before operators of lower precedence.
Operators at the same precedence level are executed either left-to-right or right-to-left, depending on their associativity.
Refer to the table below to see the precedence level and associativity of each operator.
| Precedence | Operator Name | Associativity | Symbol |
|---|---|---|---|
| 10 | Parentheses | N/A | () |
| 9 | Not | right-to-left | not |
| 8 | Exponentiation (pow) | right-to-left | ^ |
| 7 | multiply, divide | left-to-right | *, / |
| 6 | add, subtract | left-to-right | +, - |
| 5 | Greater than, Greater than or equal, Less than, Less than or equal | N/A | >, >=, <, <= |
| 4 | unequal, equal | N/A | !=, == |
| 3 | And | left-to-right | and |
| 2 | Or | left-to-right | or |
| 1 | Conditional (if) | right-to-left | ... ? ... : ... |
Since parentheses () have the highest precedence in a Notion formula, you can use them to define a specific order of operations within any formula.
It’s also good to understand that associativity can be thought of as an implied default setting of parentheses. For example:
/* Multiply has left-to-right associativity. The following are equivalent: */
2 * 3 * 4 /* Output: 24 */
(2 * 3) * 4 /* Output: 24 */
/* Exponentiation has right-to-left associativity (the "Tower Rule"). The following are equivalent: */
2 ^ 3 ^ 2 /* Output: 512 */
2 ^ (3 ^ 2) /* Output: 512 */
Code language: JavaScript (javascript)
Certain operators cannot be chained in Notion formulas; thus, they do not have associativity. These are marked with “N/A” in the associativity column.
For example, the following formulas will not work in Notion:
/* Invalid */
1 > prop("Number") > 5
/* Valid */
1 > prop("Number") and prop("Number") < 5 /* Output: true */
---
/* Invalid */
1 == toNumber(true) == toNumber("1")
/* Valid */
1 == toNumber(true) and 1 == toNumber("1") /* Output: True */
Code language: JavaScript (javascript)
If you want to understand operator precedence and associativity more thoroughly, I’ll recommend reading through the Operator Precedence guide for JavaScript on MDN’s web docs:



