The table below defines the relative precedence of operators in Magma, with decreasing strength (so operators higher in the table bind more strongly). The column on the right indicates whether the operator is left-, right-, or non-associative.
` | " | left | ||||||
( | left | |||||||
[ | left | |||||||
assigned | right | |||||||
non | ||||||||
# | non | |||||||
&* | &+ | &and | &cat | &join | &meet | &or | non | |
$ | $$ | non | ||||||
. | left | |||||||
@ | @@ | left | ||||||
! | !! | right | ||||||
^ | right | |||||||
unary- | right | |||||||
cat | left | |||||||
* | / | div | mod | left | ||||
+ | - | left | ||||||
meet | left | |||||||
sdiff | left | |||||||
diff | left | |||||||
join | left | |||||||
adj | in | notadj | notin | notsubset | subset | non | ||
cmpeq | cmpne | eq | ge | gt | le | lt | ne | left |
not | right | |||||||
and | left | |||||||
or | xor | left | ||||||
^^ | non | |||||||
? | else | select | right | |||||
-> | left | |||||||
= | left | |||||||
:= | is | where | left |