Vision does this by assigning a precedence level to each type of message. You are probably familiar with the precedence rules used for basic arithmetic. Arithmetic rules state that multiplication and division have a higher precedence than addition and subtraction, so they are performed first. If an expression contains two operations of the same precedence, they are executed in the order in which they occur. Parentheses can be used to change the order of evaluation.
Vision extends the notions of precedence to include all messages.
Unary messages take precedence over binary and keyword messages. Unary messages are evaluated in the order they appear in the expression. Within an expression, binary messages at the same precedence level evaluate in the order in which they appear. When Vision finds parenthesized expressions they are always evaluated first. If more than one parenthesized expression exists, they are evaluated in the order in which they appear.