a small number of instructions commonly found on central processing units, though others (e.g. '+' used to express string concatenation) may have complicated implementations. Operator overloading In some programming languages an operator may be ad hoc polymorphic, that is, have definitions for more than one kind of data, (such as in Java where the operator is used both for the addition of numbers and for the concatenation of strings). Such an operator is said to be overloaded. In languages that support operator overloading by the programmer (such as C++) but have a limited set of operators, operator overloading is often used to define customized uses for operators. In the example IF ORDER_DATE > "12/31/2011" AND ORDER_DATE < "01/01/2013" THEN CONTINUE ELSE STOP, the operators are: ">" (greater than), "AND" and "<" (less than). Operand coercion Some languages also allow for the operands of an operator to be implicitly converted, or coerced, to suitable data types for the operation to occur. For example, in Perl coercion rules lead into 12 + "3.14" producing the result of 15.14. The text "3.14" is converted to the number 3.14 before addition can take place. Further, 12 is an integer and 3.14 is either a floating or fixed-point number (a number that has a decimal place in it) so the integer is then converted to a floating point or fixed-point number respectively. JavaScript follows opposite rules—finding the same expression above, it will convert the integer 12 into a string "12", then concatenate the two operands to form "123.14". In the presence of coercions in a language, the programmer must be aware of the specific rules regarding operand types and the operation result type to avoid subtle programming mistakes. Operator features in programming languages The following table shows the operator features in several programming languages: See also Relational operator Notes References Programming constructs