For the first question of yours:
I want to just call the API and for it to return a channel's latest video.
the answer is positive. You'll have to proceed as follows:
Step 1: Obtain the ID of the uploads playlist corresponding to the channel of your interest:
For a given channel -- identified by its ID CHANNEL_ID --, invoke the Channels.list API endpoint, queried with its request parameter id set to CHANNEL_ID:
https://www.googleapis.com/youtube/v3/channels?part=contentDetails&fields=items/contentDetails/relatedPlaylists/uploads&id=CHANNEL_ID&key=....
The needed uploads playlist ID is to be found as the value of the property contentDetails.relatedPlaylists.uploads of the Channels resource JSON object returned by the endpoint.
Usually, a channel ID and its corresponding uploads playlist ID are related by s/^UC([0-9a-zA-Z_-]{22})$/UU\1/.
Note that above I used the fields request parameter for to get from the API only the info that's actually needed.
Also note that you'll have to invoke Channels.list as above only once, for to use the obtained uploads playlist ID as many times as you need.
Step 2: Obtain the latest uploaded video of the channel of your interest:
For that you'll need to rely on an undocumented behavior of the PlaylistItems.list API endpoint queried with its playlistId request parameter set to the ID you've obtained at step 1:
According to point 2 of this answer of mine:
For the uploads playlist of a channel, the items returned by PlaylistItems.list API endpoint are (have to be) ordered in reverse chronological order by contentDetails.videoPublishedAt.
Therefore, you'll have to invoke PlaylistItems.list on the following URL repeatedly in a loop (using pagination):
https://www.googleapis.com/youtube/v3/playlistItems?playlistId=UPLOADS_ID&part=snippet&fields=nextPageToken,items/snippet/resourceId&maxResults=50&pageToken=PAGE_TOKEN&key=...
Above, UPLOADS_ID is the ID of the uploads playlist obtained at step 1.
The request parameter pageToken=PAGE_TOKEN is needed if and only if you're not invoking PlaylistItems.list for the first time. When the endpoint is invoked the N-th time, with N >= 2, then PAGE_TOKEN would be the value of the property nextPageToken of the JSON response obtained from the previous endpoint call. If an endpoint call does not provide the property nextPageToken then the pagination loop terminates.
The pagination of the result sets of PlaylistItems.list is needed for the sake of correctness of you implementation: you'll have to ignore the snippet objects of the items array obtained from each endpoint call when the value of the property snippet.resourceId.kind is not equal with youtube#video.
For each snippet object obtained from the endpoint that has snippet.resourceId.kind equal to youtube#video, the property snippet.resourceId.videoId is set to the ID of an uploaded video belonging to the playlist identified by UPLOADS_ID.
Therefore, the first time you encounter a snippet object of this latter kind, you retain the respective video ID and break off the pagination loop (thus invoking PlaylistItems.list no more).
For what concerns your second question:
Is there any way to get the data I need without using so many units?
again, the answer is positive.
Taking into account the quota costs, executing the step 1 taken once and the step 2 taken N times amounts to a cost of 1 + N * 1 = N + 1 units. Moreover, if step 1 is not executed, then the cost would be N units. (You need not execute step 1 once you already know UPLOADS_ID from previous runs of step 1 + 2.)
Also note that your pagination loop will most likely terminate with N being 1; thus your API calls would entail most probably only 2 units of quota cost. When step 1 is not executed, the quota cost implied would most probably be only 1 unit.