Operator Precedence

When many operations occur in an expression, the compiler examines each part in a pre-specified sequence known as operator precedence.

Precedence

Primary
( ), Div( ), Mod( ), Rem( )
Unary
+, -, Not
Bit Shift
SHL, SHR
Arithmetic (binary)
^
*, /, \, Div, Mod, Rem
+, -
String Concatenation
&
Data type
As, In, Is
Null coalescing
|?
Comparison
<, <=, >, >=, =, <>
Logical/Bitwise
And, And Then, Or, Or Else, Xor
Conditional
(If…Then…Else)
Lambda
Function, Sub

Associativity

TODO

Override precedence and associativity

You can use parentheses to cause some parts of an expression to evaluate before other parts. They can override precedence and associativity. ViviFire always evaluates expressions in parentheses before outer expressions. But expressions in parentheses have the usual precedence and associativity, unless you use parentheses in the parentheses. An example follows.

TODO