I'm late to the party, but I wanted to comment on heisenberg's uncertainty principle. Terry's explanation (with the example of a momentum measurement affecting position, and vice-versa a position measurement affecting momentum) was how the uncertainty principle was explained to me in university physics when we briefly overviewed quantum physics.
Later, when I took the actual quantum mechanics course, it was mathematically shown the uncertainty principle goes a lot further than that. It's inherent in the mathematics of the sub-atomic world. Solving the schrodinger and matrix equations for whatever operator you want to define (energy, momentum, position, etc) involves using complex conjugates (you get two answers). One answer is (value +h/2), and the other is (value -h/2). So the theoretical answer is (value +/- h/2). This is dealing only in theoreticals, with no physical measurements involved whatsoever.
It follows that the uncertainty in the measurements we could possibly make of sub-atomic particles are a consequence of the uncertainty principle, they aren't the cause of it.