For me, the fastest way of understanding code is a mix (back and forth) of reading it and running it. Some questions on how it works are more easily answered by running it and seeing what happens, while other questions are better answered by reading (e.g. what are all the possible cases here?).