To expand upon what marsd said, if the first command terminates with an exit code other than 0, it is considered to have failed. In this case, the second command is executed.
If the first command terminates with a 0, it is perceived to be a success and the second command is ignored.
On a similar note is the and (&&) feature. With and, the second command is executed only if the first command terminates successfully (i.e., exit code 0).