This line “generates” a nested array.
What is written before the “for” will be generated according to the following loop-condition as if it was in a for-loop.
So the “outside” is on the right.
The outer generator executes row_num times, putting it’s output into the outer array. It’s output is the inner generator, which executes col_num times and turns it’s output into an array. The inner generator outputs just zeros, hence the inner arrays have col_num times “0”. The outer generator calls the inner generator row_num times, resulting in row_num nested arrays filled with col_num zeros.
If you replace the 0 with i*j, it would instead create the arrays with the product of whatever i and j have as values during their call in the generator-loops.
I recommend testing generators without nesting, with nesting and with different values to get a better understanding of how they work