Looping through rows in a Super Table
loop.index and loop.index0 will both return integers.

So when you do {% set previous = loop.index - 1 %}, on the first iteratin of that loop, loop.index returns 1, then you subtract 1 from it and previous is now equal to 0.

Later you call previous.url(), which is equal to 0.url() and the error message you get says there is no method named url() for the integer 0.

If you want to access the previous row, then you can probably do something like {% set previousRow = module.contents[previous] %}.