What is the difference between ampersand and semicolon in Linux Bash?
For example,
$ command1 && command2
vs
The former is a simple logic AND using short circuit evaluation, the latter simply delimits two commands.
What happens in real is that when the first program returns a nonzero exit code, the whole AND is evaluated to FALSE and the second command won't be executed. The later simply executes them both in order.