This is best explained with the following two captures:
Above you can see the ARP request. The sender (fa:16:3e:38:94:94) creates the ARP request and is looking for 192.168.12.2. It encapsulates this in an Ethernet frame with its own MAC address as the source and destination broadcast.
Everyone on the subnet will hear this message, the device that has the destination MAC address will reply:
Above you can see the ARP reply with the sender MAC and IP address. It’s encapsulated in an Ethernet frame with the source and destination MAC address. The destination MAC address was learned from the ARP request.
Hope this helps.