Most familiar for arithmetic operators. Abstract away from precise order of evaluation, naming of intermediate results.
Some languages support expressions over larger values, e.g., vector, strings, etc.
More generally, can view operators as just special way of denoting functions . So, to define expressions over an arbitrary type, just define appropriate operator functions. Operator syntax, precedence, etc. may be fixed for language or programmer-definable. Issues like sharing, storage management are tricky. Not all operators act like functions.