This method reproduces the
new_array = 
array.each do |element|
new_array << yield(element)
I tried to research
yielda great deal but I can't figure out why in this case it is taking the iteration element as an argument.
yield doesn't take an argument. The block does.
yield yields the value to the block.
yieldretrieves a block,
No, it yields control (and values) to the block.
but what exactly is being yielded here and why does it take an argument?
The object referenced by
element is yielded to the block, along with the flow of control.