While several operations take place in an expression, each part is evaluated & resolved in a predetermined order called operator precedence. You can employ parentheses to override the order of precedence & force some parts of an expression to be evaluated before others. Operations in parentheses are always performed before those outside. In parentheses, however, standard operator precedence is maintained.
While expressions contain operators from more than one category, arithmetic operators are first evaluated, comparison operators are evaluated next, & logical operators are evaluated last. Comparison operators all have equivalent precedence; that is, they are evaluated in left-to-right order wherein they appear. Arithmetic & logical operators are evaluated in the following order of precedence.
1. Arithmetic operators
|
2. Comparison operators
|
3. Logical operators
|
Description
|
Symbol
|
Description
|
Symbol
|
Description
|
Symbol
|
Exponentiation
|
^
|
Equality
|
=
|
Logical negation
|
Not
|
Unary negation
|
-
|
Inequality
|
<>
|
Logical conjunction
|
And
|
Multiplication
|
*
|
Less than
|
<
|
Logical disjunction
|
Or
|
Division
|
/
|
Greater than
|
>
|
Logical exclusion
|
Xor
|
Integer division
|
\
|
Less than or equal to
|
<=
|
Logical
equivalence
|
Eqv
|
Modulus arithmetic
|
Mod
|
Greater than or equal to
|
>=
|
Logical implication
|
Imp
|
Addition
|
+
|
Object equivalence
|
Is
|
|
|
Subtraction
|
-
|
|
|
|
|
String concatenation
|
&
|
|
|
|
|
The associativity of the operators is left to right. While multiplication & division occur together in an expression, each of the operation is evaluated as it takes place from left to right. Similarly, when addition & subtraction take place together in an expression, every operation is evaluated in order of appearance from left to right.
The string concatenation (&) operator is not an arithmetic operator, however in precedence it falls after all of the arithmetic operators and before all comparison operators. The operator is an object reference comparison operator. It does not compare objects or their values; it verifies only to determine if two object references refer to the same object.