Operator Precedence
Description
When several operations occur in an expression, each part is evaluated and resolved in a predetermined order called operator precedence. Parentheses can be used to override the order of precedence and force some parts of an expression to be evaluated before other parts. Operations within parentheses are always performed before those outside. Within parentheses, however, normal operator precedence is maintained.
When expressions contain operators from more than one category, arithmetic operators are evaluated first, comparison operators are evaluated next, and logical operators are evaluated last. Comparison operators all have equal precedence; that is, they are evaluated in the lefttoright order in which they appear. Arithmetic and logical operators are evaluated in the following order of precedence:
Arithmetic  Comparison  Logical  Bitwise 

Negation ()  Equality (=)  Not  BitNot 
Exponentiation (^)  Inequality (<>)  And  BitAnd 
Multiplication and division (*, /)  Less than (<)  Or  BitOr 
Integer division (\)  Greater than (>)  Xor  BitXor 
Modulus arithmetic (Mod)  Less than or equal to (<=)  Eqv  BitEqv 
Addition and subtraction (+, )  Greater than or equal to (>=)  Imp  BitImp 
String concatenation (&)  Is  & 
Caché Basic gives the And logical operator precedence over the Or logical operator. This order of evaluation differs from ObjectScript and Caché MultiValue Basic, both of which give And and Or equal precedence.
When multiplication and division occur together in an expression, each operation is evaluated as it occurs from left to right. Likewise, when addition and subtraction occur together in an expression, each operation is evaluated in order of appearance from left to right.
The string concatenation operator (&) is not an arithmetic operator, but in precedence it does fall after all arithmetic operators and before all comparison operators. The Is operator is an object reference comparison operator. It does not compare objects or their values; it checks only to determine if two object references refer to the same object.
See Also

Is Operator