Programming Gambas from Zip/OperatorPrecedence

Operator Precedence
In an expression, which part gets worked out first, then which operations are worked out next?

For example, is 2 + 3 * 4 equal to 20 (+ first, * second) or is it 14 (* first, then +)? Multiplication precedes addition, so the expression comes down to 14.

Rules:


 * 1) Things are worked out before they are compared.
 * 2) Anything in brackets is worked out first.
 * 3) The highest priority is changing the sign (–) or reversing true/false with NOT.
 * 4) Strings are joined before paths are assembled. (& is done before &/).
 * 5) Powers are done before multiplication or division, which are done before addition or subtraction.
 * 6) Where there are several operations and they all have the same precedence, the order is left to right but it does not matter because 3 * (4 / 2) is the same as (3 * 4) / 2
 * 7) Comparisons are worked out before they are ANDed, ORed or XORed with other comparisons.

Examples:

4 ^ 2 * 3 ^ 3 is the same as (4 ^ 2) * ( 3 ^ 3 )

a > 10 AND a < 20 is the same as ( a > 10 ) AND ( a < 20 )

4 * 2 + 3 * 3 is the same as ( 4 * 2 ) + ( 3 * 3 )

4 + 2 = 5 + 1 is the same as ( 4 + 2 ) = ( 5 + 1 )