For example, a function that tests for greater-than could be named gt, but many languages provide an infix symbolic operator so that code looks more familiar.
In contrast, many operators are infix notation and involve different use of delimiters such as parentheses.
For example: Some languages provide operators that are ad hoc polymorphic – inherently overloaded.
An operator, defined by the language, can be overloaded to behave differently based on the type of input.
Some programming languages restrict operator symbols to special characters like + or := while others allow names like div (e.g. Pascal).
Most languages do not support user-defined operators since the feature significantly complicates parsing.
Custom operators, particularly via runtime definition, often make correct static analysis of a program impossible, since the syntax of the language may be Turing-complete, so even constructing the syntax tree may require solving the halting problem, which is impossible.
JavaScript follows different rules so that the same expression evaluates to "123.14" since 12 is converted to a string which is then concatenated with the second operand.
In general, a programmer must be aware of the specific rules regarding operand coercion in order to avoid unexpected and incorrect behavior.