In this expression two objects are involved: 2 as the receiver and 4 as the message argument. The message result, or in Smalltalk parlance, the answer is supposed to be 16. Such messages are called keyword messages. A message can have more arguments, using the following syntax: 'hello world' indexOf: $o startingAt: 6 which answers the index of character 'o' in the receiver string, starting the search from index 6. The selector of this message is "indexOf:startingAt:", consisting of two pieces, or keywords. Such interleaving of keywords and arguments is meant to improve readability of code, since arguments are explained by their preceding keywords. For example, an expression to create a rectangle using a C++ or Java-like syntax might be written as: new Rectangle(100, 200); It's unclear which argument is which. By contrast, in Smalltalk, this code would be written as: Rectangle width: 100 height: 200 The receiver in this case is "Rectangle", a class, and the answer will be a new instance of the class with the specified width and height. Finally, most of the special (non-alphabetic) characters can be used as what are called binary messages. These allow mathematical and logical operators to be written in their traditional form: 3 + 4 which sends the message "+" to the receiver 3 with 4 passed as the argument (the answer of which will be 7). Similarly, 3 > 4 is the message ">" sent to 3 with argument 4 (the answer of which will be false). Notice, that the Smalltalk-80 language itself does not imply the meaning of those operators. The outcome of the above is only defined by how the receiver of the message (in this case a Number instance) responds to messages "+" and ">". A side effect of this mechanism is operator overloading. A message ">" can also be understood by other objects, allowing the use of expressions of the form "a > b" to compare them. Expressions An expression can include multiple message sends. In this case expressions are parsed according to a simple order of precedence. Unary messages have the highest precedence, followed by binary messages, followed by keyword messages. For example: 3 factorial + 4 factorial between: 10 and: 100 is evaluated as follows: 3 receives the message "factorial" and answers 6 4 receives the message "factorial" and answers 24 6 receives the message "+" with 24 as the argument and answers 30