Notion operators have a specific operator precedence order. Operators with a higher precedence (11 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 |
---|---|---|---|
11 | Parentheses | N/A | () |
10 | Not | right-to-left | not |
9 | Exponentiation (pow) | right-to-left | ^ |
8 | unaryPlus, unaryMinus | right-to-left |
+ , -
|
7 | multiply, divide | left-to-right |
* , /
|
6 | add, subtract | left-to-right |
+ , -
|
5 | larger, largerEq, smaller, smallerEq | 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
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 == +true == +"1"
// Valid
1 == +true and 1 == +"1" // Output: True
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:
