Basically what's going on is this, but with lists:
3 + 5 = X?
X = 8
3 + X = 8?
X = 5
5 + X = 8?
X = 3
In most programming languages, you can't infer a parameter by specifying a result.
(Though that's not strictly what's going on here, either)
You could further say something like X + Y = 8 and get
X = 0, Y = 8
X = 1, Y = 7
etc. for some definitions.
Which is, as the OP was getting at, sometimes incredibly useful.