PNG loses no data but can take a lot of space with complex images. JPG loses varying amounts of data but compresses complex images efficiently.
PNG uses lossless compression which means that it doesn’t alter the image in any way. JPG uses lossy compression which is usually more effective, but it smudges some of the pixels to make it happen. With reasonable levels of compression, JPG does not significantly differ from PNG in most cases, but if the image is edited and saved several times or with high compression levels, the quality drop is drastic.
So generally, PNG is favored because file size is usually not a problem these days. In particular, images with sharp edges should be preferably saved with PNG because the JPG compression attacks those first and the compression artifacts are highly visible. PNG also supports transparency which JPG doesn’t, so if you need an element without the background then PNG is your only real option.
With large, complex images and increasing file size, JPG has an edge. It’s designed for compressing digital photographs which usually have a lot of fine detail and erratic gradients, and jpg compresses them so that human eye can’t really see the difference.
Honorable mention goes to GIF which is an archaic halfway point between the two. It supports transparency, but only in binary. So each pixel either is transparent or it’s not. It has a brutal compression algorithm, but it loses no quality if the image is reduced to 256 colors or less. It also supports animation which is the only reason it’s still relevant today.