A language is typed if the specification of every operation defines types of data to which the operation is applicable, with the implication that it is not applicable to other types.[28] For example, the data represented by "this text between the quotes" is a string. In most programming languages, dividing a number by a string has no meaning; most modern programming languages will therefore reject any program attempting to perform such an operation. In some languages the meaningless operation will be detected when the program is compiled ("static" type checking), and rejected by the compiler; while in others, it will be detected when the program is run ("dynamic" type checking), resulting in a run-time exception.