The evaluation of expressions can be affected by definitions assigned to symbols
$PreRead, MakeExpression, $Pre, $Post, $PrePrint, Format, MakeBoxes. The process of going from input cell to output cell is as follows.
(1) Input Boxes are processed using $PreRead.
(2) The boxes $PreRead returns are converted to an expression using MakeExpression.
(3) The expression MakeExpression returns is processed using $Pre.
(4) The expression $Pre returns is evaluated.
(5) The expression returned by evaluation is processed by $Post.
(6) The expression $Post returns is assigned to (%n) and stored in DownValues[Out].
(7) The expression that was assigned to (%n) is processed by $PrePrint.
(8) The expression $PrePrint returns is processed using Format.
(9) The expression Format returns is converted to boxes using MakeBoxes.