These include literal numbers and other constants as well as identifiers (names) which may represent anything from simple scalar variables to complex aggregated structures and objects, depending on the complexity and capability of the language at hand as well as usage context.
Some languages, most notably the C-syntax family, stretches this conventional terminology and speaks also of ternary infix operators (a?b:c).
Theoretically it would even be possible (but not necessarily practical) to define parenthesization as a unary bifix operation.
For example, exponentiation is normally right-associative in mathematics,[1] but is implemented as left-associative in some computer applications like Excel.
In Prolog for example, the infix operator :- is non-associative, so constructs such as a :- b :- c are syntax errors.
Some (hypothetical) programming language may well have an operator called sin with a precedence lower than × but higher than + for instance.
The rules for expression evaluation are usually three-fold: Some more examples: The use of operator precedence classes and associativities is just one way.