Python lista de comprensión doble para

vec = [[1,2,3], [4,5,6], [7,8,9]]
print [num for elem in vec for num in elem]      <----- this

>>> [1, 2, 3, 4, 5, 6, 7, 8, 9]

Esto me está engañando.
Entiendo que elem es la lista dentro de la lista defor elem in vic
No entiendo muy bien el uso denum&nbsp;yfor num in elem&nbsp;Al principio y al final.

¿Cómo interpreta Python esto?
¿Cuál es el orden que se ve?