Same result but different code, what's the difference? SQL

Hey everyone,

I hope you are well. I was wondering what’s the difference between these two codes, the result is the same but I’m unsure if it’s better using one or the other, maybe one is more efficient in terms of performance?

WITH highest_scores AS(
	SELECT *
	FROM Player_Attributes
	WHERE overall_rating >= 80
)
SELECT Player.player_name, highest_scores.preferred_foot, highest_scores.overall_rating
FROM Player
INNER JOIN highest_scores
ON Player.player_api_id = highest_scores.player_api_id
GROUP BY Player.player_name
ORDER BY highest_scores.overall_rating DESC;
SELECT player_name, preferred_foot, overall_rating
FROM Player
INNER JOIN Player_Attributes
ON Player.player_api_id = Player_Attributes.player_api_id
WHERE overall_rating >= 80
GROUP BY player_name
ORDER BY overall_rating DESC;

Thank you so much!