Programming languages generally support a set of operators that are similar to operators in mathematics. A language may contain a fixed number of built-in operators (e.g., C programming language) or it may allow the creation of programmer-defined operators (e.g., C++).
Some built-in operators supported by a language have a direct mapping to a small number of instructions commonly found on central processing units, though others (e.g. '+' used to express string concatenation) may have complicated implementations.
Most programming language operators take one or two operands, with a few supporting more operands (e.g., the ?: operator in C).
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 but have a limited set of operators, such as C++, operator overloading is often used to define customized uses for operators.
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.
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.
In the Iverson Notation that later became APL, Kenneth E. Iverson defined several operators (reduction, inner product, outer product) acting on functions to produce functions. So, for example, +/ (plus-reduce) applies the reduction operator to the binary function + to create a function for adding vectors, rows of matrices, etc. thus:
+/1 2 3 4
Many more operators (Scan, Each, Curry,...) have been defined since then in various dialects of APL, and user-defined operators have also been added in those dialects of APL that provide nested arrays.