OPERATOR PRECEDENCE :

accuracy | base | buttons | constants | contact | detail view | legal | ops | precedence | prefs | terms | usage

Parentheses are ultimately powerful, except for base conversion, which isn't really an operator per se, but rather an import filter, a substitution, like R for last result, which are evaluated from left to right, but anyway, base isn't really being refered to here, and neither is assign, :=, which is not really considered part of an expression; so now that I've added that qualifier, let me start again...

Parentheses are ultimately powerful. Anything inside parentheses is calculated before anything outside those parentheses. Parentheses may be nested. After the parentheses, order of operations gets a bit more interesting.

Suffixes are done first, in the order they are encountered going from left to right.

Next, Prefixes are executed in the order they are encountered (nb) going from right to left. This allows compound expressions like (_sin _rand 45) to evaluate with minimal fuss. This should not mess up order of operations in any percieveable or significant way. If it does, please inform me.

Next, extended binary operators, like _mod, _div, and _log.

Then powers are calculated.

Then multply and divide.

Then add and subtract. Poof, you're done.

To sum up:
_base, R, & M, and sloppy syntax are substituted in place.
( ) innermost first, (then left to right ((second)+((first)+third)) if that matters to you)
! % in the order they are found, left to right
_sin _inv _abs in the order they are found, right to left
_mod _div _root in the order they are found, left to right
^ in the order found, left to right
* / in the order they are found, left to right
+ - in the order they are found, left to right

After all of this, if there was an assignment using :=, :+, :-, :*, or :/ then the Variable stated will be assigned that value.

accuracy | base | buttons | constants | contact | detail view | legal | ops | precedence | prefs | terms | usage